<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
	"http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<title>Testing dojo/request/iframe</title>
		<style type="text/css">
			@import "../../resources/dojo.css";
		</style>
		<script>
			var dojoConfig = {
				async: true
			};
		</script>
		<script type="text/javascript" src="../../dojo.js"></script>
		<script type="text/javascript">
			require(["doh", "dojo/request/iframe", "dojo/_base/lang", "dojo/dom", "dojo/domReady!"], function(doh, iframe, lang, dom){
				doh.register("dojo/request/iframe", [
					function ioIframeGetText(t){
						var d = new doh.Deferred();
						var td = iframe.get("iframeDummyMethod.php?type=text", {
							preventCache: true
						});
						td.then(d.getTestErrback(function(data){
							t.is("iframe succeeded", data);

							return td.response.then(d.getTestCallback(function(response){
								t.is("iframe succeeded", response.data);
							}));
						}));
						return d;
					},

					function ioIframePostJson(t){
						var d = new doh.Deferred();
						var td = iframe.post("iframeDummyMethod.php?type=json", {
							preventCache: true,
							form: "contentArrayTest",
							data: {
								color: "blue"
							},
							handleAs: "json"
						});
						td.then(d.getTestCallback(function(data){
							t.is("json", data.query.type);
							t.is("blue", data.post.color);
							t.is("42", data.post.size);
						}));
						return d;
					},

					function ioIframePostWithoutForm(t){
						var d = new doh.Deferred();
						var td = iframe.post("iframeDummyMethod.php?type=json", {
							preventCache: true,
							data: {
								color: "blue"
							},
							handleAs: "json"
						});
						td.then(d.getTestCallback(function(data){
							t.is("json", data.query.type);
							t.is("blue", data.post.color);
						}));
						return d;
					},

					function ioIframeGetJson(t){
						var d = new doh.Deferred();
						var td = iframe.get("iframeDummyMethod.php?type=json", {
							preventCache: true,
							data: {
								color: "blue"
							},
							handleAs: "json"
						});
						td.then(d.getTestCallback(function(data){
							t.is("json", data.query.type);
							t.is("blue", data.query.color);
						}));
						return d;
					},

					function ioIframeGetWithForm(t){
						var d = new doh.Deferred();
						var td = iframe.get("iframeDummyMethod.php?type=json", {
							preventCache: true,
							form: "contentArrayTest",
							data: {
								color: "blue"
							},
							handleAs: "json"
						});
						td.then(d.getTestCallback(function(data){
							t.is("json", data.query.type);
							t.is("blue", data.query.color);
							t.is("42", data.query.size);
						}));
						return d;
					},

					function ioIframeGetJavascript(t){
						var d = new doh.Deferred();
						var td = iframe.get("iframeDummyMethod.php?type=javascript", {
							preventCache: true,
							handleAs: "javascript"
						});
						td.then(d.getTestCallback(function(){
							t.is(42, window.iframeTestingFunction());
						}));
						return d;
					},

					function ioIframeGetHtml(t){
						var d = new doh.Deferred();
						var td = iframe.get("iframeDummyMethod.php?type=html", {
							preventCache: true,
							handleAs: "html"
						});
						td.then(d.getTestCallback(function(data){
							t.is("SUCCESSFUL HTML response",
								data.getElementsByTagName("h1")[0].innerHTML);
						}));
						return d;
					},

					function ioIframeGetXml(t){
						var d = new doh.Deferred();
						var td = iframe.get("iframeDummyMethod.php?type=xml", {
							preventCache: true,
							handleAs: "xml"
						});
						td.then(d.getTestCallback(function(data){
							t.is(4, data.documentElement.getElementsByTagName("child").length);
						}), lang.hitch(d, "errback"));
						return d;
					},
					function ioIframeDataArray(t){
						//Tests if an array passed in content causes as an error on cleanup.
						var d = new doh.Deferred();
						var td = iframe.post("iframeDummyMethod.php?type=json", {
							form: "contentArrayTest",
							data: {"tag": ["value1","value2"]},
							handleAs: "json"
						});
						td.then(d.getTestCallback(function(data){
							t.is("json", data.query.type);
							t.is("value2", data.post.tag);
							t.is("42", data.post.size);

							/* Test to make sure the form still exists and it hasn't moved */
							var form = dom.byId("contentArrayTest");
							t.t(form);
							t.isNot("absolute", dom.byId("contentArrayTest").style.position);
						}));
						return d;
					},
					{
						name: "iframeQueue",
						timeout: 10000,
						runTest: function(t){
							var d = new doh.Deferred();

							iframe.get("iframeDummyMethod.php",{
								query: {
									type: "text",
									delay: 2,
									text: "one"
								}
							}).then(d.getTestErrback(function(data){
								t.is("one", data);
							}));
							iframe.get("iframeDummyMethod.php",{
								query: {
									type: "text",
									text: "two"
								}
							}).then(d.getTestErrback(function(data){
								t.is("two", data);
							}));
							iframe.get("iframeDummyMethod.php",{
								query: {
									type: "text",
									text: "three"
								}
							}).then(d.getTestCallback(function(data){
								t.is("three", data);
							}));

							t.is(3, iframe._dfdQueue.length);

							return d;
						}
					}
				]);
				doh.run();
			});

		</script>
	</head>
	<body>
		<form id="contentArrayTest" method="get" enctype="multipart/form-data">
			<input type="hidden" name="size" value="42"/>
		</form>
	</body>
</html>
